" VimL字典函数测试示例
" 这个文件展示了如何使用内置的字典函数

" 1. 创建和初始化字典
echo "=== 字典创建和基本操作 ==="
let user_info = {"name": "张三", "age": 25, "city": "北京", "score": 95.5}

echo "用户信息字典："
echo user_info

" 2. keys() 函数 - 获取所有键
echo "\n=== keys() 函数测试 ==="
let all_keys = keys(user_info)
echo "所有键："
echo all_keys

" 3. values() 函数 - 获取所有值
echo "\n=== values() 函数测试 ==="
let all_values = values(user_info)
echo "所有值："
echo all_values

" 4. items() 函数 - 获取键值对列表
echo "\n=== items() 函数测试 ==="
let all_items = items(user_info)
echo "所有键值对："
echo all_items

" 5. has_key() 函数 - 检查键是否存在
echo "\n=== has_key() 函数测试 ==="
echo "是否有'name'键："
echo has_key(user_info, "name")
echo "是否有'email'键："
echo has_key(user_info, "email")

" 6. len() 函数 - 获取字典大小
echo "\n=== len() 函数测试 ==="
echo "字典大小："
echo len(user_info)

" 7. get() 函数 - 安全获取值
echo "\n=== get() 函数测试 ==="
echo "获取存在的键'name'："
echo get(user_info, "name")
echo "获取不存在的键'email'（无默认值）："
echo get(user_info, "email")
echo "获取不存在的键'email'（有默认值）："
echo get(user_info, "email", "unknown@example.com")

" 8. copy() 函数 - 浅拷贝字典
echo "\n=== copy() 函数测试 ==="
let user_copy = copy(user_info)
echo "拷贝的字典："
echo user_copy
echo "注意：当前虚拟机版本不支持字典索引赋值语法"
echo "如 dict[key] = value，这是待实现的功能"

" 9. 嵌套字典测试deepcopy()
echo "\n=== deepcopy() 函数测试 ==="
let nested_dict = {"user": user_info, "settings": {"theme": "dark", "language": "zh"}}

echo "嵌套字典："
echo nested_dict

let deep_copy = deepcopy(nested_dict)
echo "深拷贝字典："
echo deep_copy

echo "注意：当前虚拟机版本不支持嵌套字典的索引修改"
echo "如 dict[key][subkey] = value，这是待实现的功能"

" 10. remove() 函数 - 删除键并返回值
echo "\n=== remove() 函数测试 ==="
let test_dict = copy(user_info)
echo "删除前的字典："
echo test_dict
echo "删除'age'键，返回值："
let removed_value = remove(test_dict, "age")
echo removed_value
echo "删除后的字典："
echo test_dict

" 11. 综合应用示例 - 学生成绩统计
echo "\n=== 综合应用示例 ==="
let students = {"student1": {"name": "王五", "scores": [85, 92, 78]}, "student2": {"name": "赵六", "scores": [90, 88, 95]}}

echo "学生字典："
echo students

echo "所有学生ID："
echo keys(students)

echo "注意：当前虚拟机版本不支持for循环遍历字典和复杂的字符串拼接"
echo "这些是待实现的高级功能"

" 12. 错误处理示例
echo "\n=== 错误处理示例 ==="
echo "尝试删除不存在的键："
echo "注意：当前虚拟机版本不支持try-catch语法"
echo "remove()函数在键不存在时会直接报运行时错误"

echo "\n=== 字典函数测试总结 ==="
echo "已测试的功能："
echo "- 字典字面量创建"
echo "- keys(), values(), items()函数"
echo "- has_key(), len(), get()函数"
echo "- copy(), deepcopy()函数"
echo "- remove()函数（需要小心使用）"
echo "\n待实现的功能："
echo "- 字典索引赋值 dict[key] = value"
echo "- 嵌套字典访问 dict[key][subkey]"
echo "- for循环遍历字典"
echo "- try-catch错误处理"
echo "- 字符串拼接操作符(.)"
echo "\n字典函数测试完成！"